package cn.plugins.generator.datatype

/**
 * 创建于 2020-05-26 23:01
 *
 * @author jiangyun
 * @类说明：mysql数据类型
 */
object MysqlDataType {

    /**
     * 获取mysql字段类型信息
     *
     * @param languageType 语言类型(java,kotlin)
     * @return
     */
    fun getMysqlParamType(languageType: String): Map<String, String>? {
        val map: MutableMap<String, String> = HashMap(32)
        map["char"] = "String"
        map["varchar"] = "String"
        map["tinytext"] = "String"
        map["text"] = "String"
        map["mediumtext"] = "String"
        map["longtext"] = "String"
        map["tinyint"] = if (languageType == "java") "Integer" else "Int"
        map["smallint"] = if (languageType == "java") "Integer" else "Int"
        map["mediumint"] = if (languageType == "java") "Integer" else "Int"
        map["int"] = if (languageType == "java") "Integer" else "Int"
        map["integer"] = if (languageType == "java") "Integer" else "Int"
        map["bigint"] = "Long"
        map["float"] = "Float"
        map["double"] = "Double"
        map["decimal"] = "BigDecimal"
        map["time"] = "Time"
        map["date"] = "Date"
        map["datetime"] = "Date"
        map["timestamp"] = "Date"
        map["json"] = "com.alibaba.fastjson.JSONObject"
        map["blob"] = "String"
        map["longblob"] = "String"
        map["tinyblob"] = "String"
        return map
    }

    /**
     * 获取mysql字段完整类型信息
     *
     * @param languageType 语言类型(java,kotlin) 下面的语言为kotlin时，为了文档显示字段正常，还是使用的java标识的类型
     * @return
     */
    fun getFullMysqlParamType(languageType: String): Map<String, String>? {
        val map: MutableMap<String, String> = HashMap(32)
        map["char"] = if (languageType == "java") "java.lang.String" else "java.lang.String"
        map["varchar"] = if (languageType == "java") "java.lang.String" else "java.lang.String"
        map["tinytext"] = if (languageType == "java") "java.lang.String" else "java.lang.String"
        map["text"] = if (languageType == "java") "java.lang.String" else "java.lang.String"
        map["mediumtext"] = if (languageType == "java") "java.lang.String" else "java.lang.String"
        map["longtext"] = if (languageType == "java") "java.lang.String" else "java.lang.String"
        map["tinyint"] = if (languageType == "java") "java.lang.Integer" else "java.lang.Integer"
        map["smallint"] = if (languageType == "java") "java.lang.Integer" else "java.lang.Integer"
        map["mediumint"] = if (languageType == "java") "java.lang.Integer" else "java.lang.Integer"
        map["int"] = if (languageType == "java") "java.lang.Integer" else "java.lang.Integer"
        map["integer"] = if (languageType == "java") "java.lang.Integer" else "java.lang.Integer"
        map["bigint"] = if (languageType == "java") "java.lang.Long" else "java.util.Long"
        map["float"] = if (languageType == "java") "java.lang.Float" else "java.util.Float"
        map["double"] = if (languageType == "java") "java.lang.Double" else "java.util.Double"
        map["decimal"] = "java.math.BigDecimal"
        map["date"] = if (languageType == "java") "java.util.Date" else "java.util.Date"
        map["time"] = if (languageType == "java") "java.sql.Time" else "java.sql.Time"
        map["datetime"] = if (languageType == "java") "java.util.Date" else "java.util.Date"
        map["timestamp"] = if (languageType == "java") "java.util.Date" else "java.util.Date"
        map["json"] = if (languageType == "java") "com.alibaba.fastjson.JSONObject" else "com.alibaba.fastjson.JSONObject"
        map["blob"] = if (languageType == "java") "java.lang.String" else "java.lang.String"
        map["longblob"] = if (languageType == "java") "java.lang.String" else "java.lang.String"
        map["tinyblob"] = if (languageType == "java") "java.lang.String" else "java.lang.String"
        return map
    }
}